package com.example.yan_music.contract;

import com.example.yan_music.base.presenter.IPresenter;
import com.example.yan_music.base.view.IView;
import com.example.yan_music.bean.wangyi.NewSearchSong;

import java.util.ArrayList;

public interface ISearchContract {

    interface View extends IView {
        /**
         * 获取搜索关键词
         * @return
         */
        String getKeywords();

        /**
         * 设置歌曲列表，为RecyclerView提供数据源
         * @param songList
         */
        void setSearchList(ArrayList<NewSearchSong.ResultBean.SongsBean> songList);

        /**
         * 搜索失败弹出的对话框，提示用户搜索失败
         */
        void showSearchFieldDialog();

        /**
         * 用户没输入关键词弹出对话框提示用户输入关键词
         */
        void showKeywordsIsNullDialog();

        /**
         * 网络问题（超时，无网络，其他错误），弹出对话框提示用户检查网络再试一次
         */
        void showNetErrDialog();

        /**
         * 搜索更多成功
         *
         * @param songListBeans
         */
        void searchMoreSuccess(ArrayList<NewSearchSong.ResultBean.SongsBean> songListBeans); //搜索更多内容成功

        /**
         * 结束上拉加载
         */
        void finishLoadMore();

        /**
         * 显示“单曲”字段
         */
        void showSearchCount();

        /**
         * 隐藏历史记录布局
         */
        void hideHistoryRecord();

        /**
         * 搜索失败弹窗
         */
        void showSearchFailed();

        /**
         * 播放歌曲
         */
        void playSearchSong(String playUrl);

        /**
         * 获取歌词
         * @param lyric
         */
        void getSongLyric(String lyric);

        /**
         * 获取歌曲封面uri
         * @param uri
         */
        void getSongCoverUrl(String uri);

        /**
         * 搜索更多没有更多数据时弹出
         */
        void showNoMoreDataDialog();
    }

    interface Presenter extends IPresenter<View> {
        /**
         * <p>
         *     搜索功能
         * </p>
         * @param keywords      搜索关键词
         * @param offset        搜索出来展示的页数
         */
       void search(String keywords, int offset);

        /**
         * 加载更多
         *
         * @param keywords
         * @param offset
         */
       void searchMore(String keywords, int offset);

        /**
         * 获取播放地址
         *
         * @param songId
         * @param songName
         */
        void getSongPlayUrl(int songId, String songName);

        /**
         * 获取歌词
         * @param songId
         */
        void getSongLyric(int songId);

        /**
         * 获取专辑
         * @param songId
         */
        void getSongAlbum(int songId);

        void login(String phoneNum, String password);

    }
}
